package com.jz.pay.aop;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main<N> {

    public static void main(String[] args) {
        Object o = new Object();
        assert o == "a" : "asd";
    }

    void test(){
        List<?> arr = new ArrayList<>();
        JSON.parseObject("a",ArrayList.class);
    }

    N  testE(N n){
        return n;
    }



    /**
     * 返回通过指定路口之间的最短时间
     * @param lights int整型二维数组 n*m 个街口每个交通灯的周期，值范围[0,120]，n和m的范围为[1,9]
     * @param timePerRoad int整型 相邻两个街口之间街道的通过时间,范围为[0,600]
     * @param rowStart int整型 起点的行号
     * @param colStart int整型 起点的列号
     * @param rowEnd int整型 终点的行号
     * @param colEnd int整型 终点的列号
     * @return int整型
     */
    public int calcTime (int[][] lights, int timePerRoad, int rowStart, int colStart, int rowEnd, int colEnd) {
        // write code here
        return 0;
    }




    /**
     * 第一题
     */
    static void calc(){
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int m = in.nextInt();
            int n = in.nextInt();
            int k = in.nextInt();
            int sum = 0;
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < n; j++) {
                    if ((i%10+i/10+j%10+j/10) <= k){
                        sum++;
                    }
                }
            }
            System.out.println(sum);
        }
    }

// [ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]  20 20 9
// [ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
// [ 2,3,4,5,6,7,8,9,10,11,12,13,14,15]
// [ 3,4,5,6,7,8,9,10,11,12,13,14,15]
// [ 4,5,6,7,8,9,10,11,12,13,14,15]
// [ 5,6,7,8,9,10,11,12,13,14,15]
// [ 6,7,8,9,10,11,12,13,14,15]
// [ 7,7,8,9,10,11,12,13,14,15]
// [ 8,7,8,9,10,11,12,13,14,15]
// [ 9,7,8,9,10,11,12,13,14,15]
// [ 10,7,8,9,10,11,12,13,14,15]
// [ 11,7,8,9,10,11,12,13,14,15]


    static void calc2(){
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case

            int m = in.nextInt(); // 数组长度
            List<Integer> arr = new ArrayList<>(m);
            for (int i = 0; i < m; i++) {
                arr.add(in.nextInt());
            }

            Collections.sort(arr);


            while (arr.size() > 2) {
                int indexx = arr.size() - 3, indexy = arr.size() - 2, indexz = arr.size() - 1;
                int x = arr.get(indexx);
                int y = arr.get(indexy);
                int z = arr.get(indexz);

                arr.remove(indexz);
                arr.remove(indexy);
                if (x == y) {
                    if (y == z) {
                        arr.remove(indexx);
                    } else {
                        arr.set(indexx, z - y);
                    }
                } else if (y == z) {
                    arr.set(indexx, y - x);
                } else {
//                        y != z
                    arr.set(indexx, Math.abs(z-2*y+x));
                }
                if (arr.size() > 1 && arr.get(indexx) < arr.get(indexx - 1)) {
                    Collections.sort(arr);
                }
            }

            if (arr.size() == 0) {
                System.out.println(0);
            } else if (arr.size() == 1) {
                System.out.println(arr.get(0));
            } else {
                System.out.println(Math.max(arr.get(0), arr.get(1)));
            }
        }

    }



}
